package com.doit.day03.不可变集合

import scala.collection.mutable.ArrayBuffer

object _03_map {
  def main(args: Array[String]): Unit = {
    //何为算子 ==》 他也是一个方法，只不过这个方法里面传的是一个函数
    val arr: Array[Int] = Array(1, 2, 3, 4, 5)
    //需求：想要将数组中的每一个元素都乘以10 ==》 Array(10,20,30,40,50)
    /*    val res: Array[Int] = for (elem <- arr) yield{
          elem*10
        }*/
    // f: A => B   做映射

    val ints1: Array[Int] = arr.map((a: Int) => {a * a})
    //如果你的函数只有一个参数那么小括号可以省略，函数体里面也只有一句，大括号也可以省略，只有一个参数得情况下，类型我可以自动推断出来，所以类型也不要了
    val ints2: Array[Double] = arr.map(a=> Math.pow(a,2))
    //如果说参数后面只用了依次，那么可以用 _ 来代替
    val ints3: Array[Double] = arr.map(Math.pow(_,2))
    println(ints3.mkString(","))

    //函数有一个至简原则





    val ints: Array[Int] = arr.map((a:Int)=>{a*10})

    val ints10: Array[Int] = arr.map(a=>a*10)
    val ints11: Array[Int] = arr.map(_*10)



    println(ints.mkString(","))//10,20,30,40,50

    //我给你一个数组，数组里面有一行行得句子
    val arr1: Array[String] = Array("hello,siyi,siyi,hello", "hanhan,hi,hi,hanhan", "ting,gun,gun,ting")
    //现在要求你，将这一行行得句子，转变成一个个得数组，数组里面放的是Array(hello,siyi,si,hello)

    //Map ==》
    val res: Array[Array[String]] = arr1.map((a:String)=>{a.split(",")})

    val res1: Array[Array[String]] = arr1.map(_.split(","))




    arr1.map((line:String)=>{line.split(",")})

    for (elem <- res1) {
      println(elem.toList)
    }










  }

  val f = (a: Int) => {
    a * 10
  }

  val f1 = (line:String)=>{
    //"hello,siyi,siyi,hello"
    line.split(",")//Array(hello siyi  siyi hello)
  }

}
